
/**
 * @file gestiondefichier.h
 * @author Florian Castellane <florian.castellane@grenoble-inp.org>
 * @author Christian Proust <christian.proust@phelma.grenoble-inp.fr>
 * @date Tue Sep 25 23:04:00 2012
 * @brief En-tête des fonctions de gestion de fichiers.
 *
 */

#include <stdio.h>
#include "gestiondetypes.h"

#ifndef _gestiondefichier
#define _gestiondefichier

#define TAILLE_MAX_LIGNE 1024
#define TAILLE_MAX_INSTRUCTION 6
//taille max d'une ligne du fichier source



FILE * ouvrir_fichier(const char * nom_de_fichier, const char* mode);
/*
    Ouvre le fichier nom_de_fichier dans le mode spécifié, verifie que l'ouverture s'est bien déroulée.
    Si une erreur est rencontree, stoppe le programme
*/

LISTE recuperer_source_assembleur (char *fichier_source);


int verif_taille_fichier(FILE *fichier, int taille_max_ligne);
//verifie la taille max d'un fichier ouvert en mode lecture
//stop le programme si le fichier est trop grand


INSTRUCTION * recuperer_instruction(char *nom_fichier_source);
//Recupere et renvoi un tableau d'instruction d'un fichier


void visualiser_dictionnaire_instruction(INSTRUCTION[]);

void imprimer_l(char *nom_du_fichier, LIGNE_INSTRUCT_ASM * text, LIGNE_DIRECTIVE_ASM * data, LISTE source, LISTE l_etq);
int imprimer_text(LIGNE_INSTRUCT_ASM text, int numero_source, int numero_ASM, int indice, FILE *fichier);
LISTE imprimer_source(int numero_objet, LISTE source, FILE *fichier);

void imprimer_etq(LISTE etq,FILE * fichier);
char * changer_extension_fichier(char * nom_source,char *ext);

void imprimer_obj(char *nom_du_fichier, LIGNE_INSTRUCT_ASM * text, LIGNE_DIRECTIVE_ASM * data);
int imprimer_data(LIGNE_DIRECTIVE_ASM data, int numero_source, int numero_ASM, int indice, FILE *fichier);

long int taille_text(LIGNE_INSTRUCT_ASM * text);
long int taille_data(LIGNE_DIRECTIVE_ASM * data) ;
#endif // _gestiondefichier
